3. DFT, DFS, FFT 总结

3.1 信号与空间

向量集合 V:可以定义加法、标量乘法、满足交换律、结合律、分配律、存在加法零元、加法逆元、乘法单位元。

向量的内积 定义为:

,: V×VF

内积用于测量向量间的相似性。如果内积为零,则称向量是正交的。

内积满足的特性:分配性、共轭对称性、标度性、正定性、正交性。

信号空间 有限支持序列和周期性序列可以定义在 CN 空间中:

x=[x0,x1,,xN1]

要求序列是平方可加的。

基向量 在向量空间 H,找到一个向量集合 {w(k)},包含最少的向量数,使得其他任意向量空间中的向量都可以写成这些向量的线性组合。

也就是满足以下条件,

x=k=0K1αkw(k),αkC

使得基系数 αk 是唯一的。并且基向量之间线性无关。

例如,[1,1] 区间的傅里叶基函数:

12,cosπt,sinπt,cos2πt,sin2πt,

利用傅里叶基函数可以近似非连续函数,例如 h(t)=sgn(t),使用:

h^(t)=k=0N12k+1sin[(2k+1)πt]

近似。近似的结果满足均方收敛的条件,但是非一致收敛。

3.2 DFT

DFT 在信号空间中的表征 由时域基转换到了频域基:

[w(k)]n=ej2πNkn

可以证明是正交的,但是没有进行归一化. DFT 矩阵:

WN=[w(0),,w(n1)]H

DFT 公式:

[X]k=w(k),xX=WNx

IDFT 公式:

x=1NWNHX

DFT 公式和 IDFT 公式

X[k]=n=0N1x[n]ej2πNkn,k=0,1,,N1x[n]=1Nk=0N1X[k]ej2πNkn,n=0,1,,N1

DFT 示例:余弦序列

当相位为零,

x[n]=3cos(2π4n64),x[n]C64
ω=2πkN
x[n]=32(w4[n]+w60[n])
X[k]=wk[n],x[n]=96(δ[k4]+δ[k60])

image-20241222060209637

注意,wk[n] 未进行归一化。

当相位不为零,

x[n]=3cos(2π4n64+π3),x[n]C64
x[n]=32(ejπ/3w4[n]+ejπ/3w60[n])
X[k]=wk[n],x[n]=96ejπ/3δ[k4]+96ejπ/3δ[k60]

image-20241222060219507

幅值不变,相角发生了变化。

DFT 示例:矩形窗信号 MN 长的矩形信号。

X[k]=sin(πNMk)sin(πNk)ejπN(M1)k

根据定义,X[0]=M,并且如果 Mk/N 是整数,则 X[k]=0.

image-20241222060540750

 

3.3 DFS

X~(k)=DFS{x~(n)}=n=0N1x~(n)ej2πNnk=n=0N1x~(n)WNnkx~(n)=IDFS{X~(k)}=1Nk=0N1X~(k)ej2πNnk=1Nk=0N1X~(k)WNnk

圆周位移

x~[nM]RN[n]=x[mod(nm,N)]

3.4 DFT 性质

例题 计算 x(n)={3,2,0,2}h(n)={4,2,1,1} 的圆周卷积和,可以使用比较简便的方法:

x(n)3202y(n)
h((n)4)4-11-26
h((1n)4)-24-114
h((2n)4)1-24-1-3
h((3n)4)-11-247

可得:

y(n)={6,4,3,7}

例题 已知有限长序列为

x(n)=δ(n2)+4δ(n4)
  1. 求其 8 点 DFT;

    X(k)=n=0N1x(n)WNnk=WN2k+4WN4k=(j)k+4(1)k

    计算 X(07).

  2. h(n) 的 8 点 DFT 为 H(k)=W83kX(k),求 h(n).

    H(k)=n=0N1x(n)WN(n3)k=n=Nx((n+3)N)WNnk
    h(n)=δ(n7)+4δ(n1)
  3. 若序列 y(n) 的 8 点 DFT 为 Y(k)=X(k)H(k),求 y(n).

    y(n)=δ(n1)+8δ(n3)+16δ(n5)

3.5 傅里叶变换的各种可能形式

image-20241222140919335

image-20241222175647537

image-20241222175655404

image-20241222175705437

3.6 频域采样定理

给定 x[n]l2(Z)(有限支持/无限序列),计算其 DTFT X(ejω)L2(R),表达式为:

X(ejω)=n=x[n]ejωn

进行频域采样,采样 N 点:

X~[k]=X(ejω)|ω=2πk/N=n=x[n]WNkn

进行 IDFS 还原:

x~[n]=1Nn=X~[k]WNkn

关心 x[n]x~[n] 的关系。展开可得:

x~[n]=1Nn=X~[k]ejk2πNn=1Nn=(m=x[m]WNkm)WNkn=m=x[m](1Nk=0N1WNk(mn))

因为只有 mnN 的倍数的时候后面一项等于一,否则等于零,

x~[n]=r=x[n+rN]

研究 x~[n]x[n] 的关系:x~[n]x[n] 的周期延拓,延拓周期是 N.

研究周期延拓造成的混叠现象

  1. x[n] 是无限长序列,则延拓过程中一定出现混叠,x~[n]x[n]. 频域抽样次数 N 越大,失真越小。

  2. x[n] 是有限支持序列,有限支持区域长度M.

    • NM,周期延拓无混叠,可以由 x~[n] 恢复 x[n]

    • N<M,周期延拓有混叠,不可以由 x~[n] 恢复 x[n].

频域采样定理

频域采样点数为 N,有限支持区域长度为 M(有值区间 0M1),只有当 NM,由 X~[k] 的 IDFS 得到的时域序列 x~[n],满足

x~[n]RN[n]=x[n]RN[n]

即可由频域采样 X~[k] 不失真地恢复出原信号 x[n],否则产生时域混叠现象。

由此可得,频域抽样产生时域的周期延拓,而时域抽样产生频域的周期延拓。

频域插值重构:使用采样点 X(k)|z=ej2πkN 重构 X(z).

X(z)=n=0N1x(n)zn=n=0N1[1Nk=0N1X(k)WNnk]zn=1Nk=0N1X(k)[n=0N1WNnkzn]=1Nk=0N1X(k)1WNNkzN1WNkz1=1zNNk=0N1X(k)1WNkz1=k=0N1X(k)Φk(z)

插值函数:

Φk(z)=zN1NzN1(zWNk)
Φ(z)|z=WNr=δ(rk)

插值函数零点:z=WNr,r=0,1,2,,k1,k+1,,N1.

代入 z=ejω 进入 Φk(z) 可得

Φ(ω)=1Nsin(ωN/2)sin(ω/2)ej(N1)ω/2

重写 X(z) 表达式为:

Φ(z)=k=0N1X(k)Φ(ω2πk/N)

3.7 非周期连续时间信号谱分析

3.7.1 时域采样

image-20241222205352969

由时域采样定理:要求采样频率 fs2fh,其中 fh 是带限信号的最高频率。可以适当增加采样频率,有助于减小后面的混叠失真,取 fs=(36)fh. 如果不是带限信号,需要加入防混叠滤波器。

当抽样频率不符合要求时,会产生 频谱的混叠失真

3.7.2 时域截断

image-20241222205415996

可以看成原信号乘以窗函数:

d[n]={1,0nN10,else.

image-20241222205935922

如下图,原始信号频谱图由频率为 100 Hz120 Hz 的谱线构成,经过加窗之后,卷积形成下面的频谱图。因为窗函数存在主瓣和旁瓣,且主瓣存在一定宽度,所以对频谱进行了一定程度的展宽,造成了频谱泄露的现象

image-20241222215613087

当窗长 N 不是 x[n] 信号周期长度的整数倍时,会产生频谱泄露,反之不存在。

3.7.3 周期延拓

时域上的周期延拓,对应频域上的采样。根据频域采样定理,需要采样点数 MN,我们取 M=N.

image-20241222205425303

image-20241222213459480

N 为序列长度,T 为采样周期,则采样的总时间为 NT=T0,可得频率分辨率为:

F0=1T0=1NT=fsN

频率分辨率越小,分辨接近频率信号的能力越强。

提高分辨率的方法:

DFT 频谱间隔为 fs/N,得到的是连续频谱的等间隔的 N 点抽样值,而这 N 点抽样值中的任意相邻两点之间的频率点上的频谱值是不知道的,就好像是通过一个栅栏的缝隙观看一个镜像一样,称为 栅栏效应

减小栅栏效应

3.7.4 计算 DFT

image-20241222205436389

3.7.5 谱分析综合习题

分析信号:

x(t)=cos(2πf1t)+cos(2πf2t),f1=100 Hz,f2=120 Hz

用采样频率 fs=600 Hz 对其进行采样。

分析信号:

xa(t)=cos(2πf1t)+12cos(2πf2t)+12cos(2πf3t)

其中 f1=600 Hz,f2=500 Hz,f3=700 Hz.

  1. 选择采样周期 fs,第一要求 fs>2fh 使得频谱无混叠,第二要求 fs 为有理数,使得采样后 x[n] 是周期序列;

  2. 抽样点数 N 应该满足 NTs=N/fs 是原序列周期的整数倍,才能没有频谱泄露。

    原序列周期为 gcd(1/600,1/500,1/700)=1/100。假设 fs=2100 Hz,那么 N=21k,才能没有频谱泄露。

  3. 假设使用 fs=3 kHz 频率抽样,抽样点数 N 为 512 点,因为 N/fs 不是原始周期的整数倍,所以会产生频谱泄露。

    如果要求 fs=3 kHz 的情况下,既没有频谱泄露,又能分辨所有频率分量,要求:

    F0=fsN100 HzNfs1/100

    我们可以取 N=30. 恰好可以分辨所有频率分量。

分析序列:

x[n]=cos[0.48πn]+cos[0.52πn]
  1. N=10,假设抽样频率为 fs,则原始的频率间隔为 0.02fs

    此时的频率分辨率为:

    F0=fsN=0.2fs>0.02fs

    无法分辨频率分量;

  2. N=10,但是补 90 个零,因为 F0=1/T0T0 为有效数据的长度没有改变,所以频率分辨率没有改变,但是减少了栅栏效应。

  3. N=100,因为 F0=fs/100=0.01fs<0.02fs,所以可以分辨所有频率分量。同时,因为序列周期为 N=50N=10050 的倍数,所以没有频谱泄露。

分析正弦信号:

x(t)=cos(2π100t)+cos(2π400t)

采样频率 fs=900 Hz,采样点数 N=64.

  1. 得到 x(n) 是否为周期序列?如果是,x(n) 的最小周期为多少?频率分辨率为多少 Hz?

    是否会发生频谱混叠?原序列 fh=400 Hz,满足奈奎斯特条件:

    fs>2fh

    因此不会发生混叠。

    采样间隔为 Ts=1/900 s,则

    x(n)=xa(nTs)=cos(2π9n)+cos(8π9n)

    x(n) 的最小周期为 N=9.

    频率分辨率 可以通过下述表达式计算得到:

    F0=1NTs=fsN=14.0625 Hz

    其中 NTs 可以理解为有效采样长度的时间。

  2. 如果我们想要 |Y(k)| 中得到的实际频率和 x(t) 频率成分一致,能否通过对于 64 点矩形窗截取的 x(n) 进行补零来达成目的,原因是什么?能否通过增加矩形窗的长度来达到目的,原因是什么?

    频率响应的峰值点为:

    2π9,8π9

    如果能够使得采样点 2πk/N 恰好落在峰值点上,比如取 N 为 9 的倍数,补 8 个零达到 72,就可以使得频率成分一致。但是因为此时存在弱信号对强信号的遮盖作用(因为 DTFT 频谱图的采样长度 N=64,抽样的点数为 M=72,窗函数零点不是一一对应,旁瓣对主瓣产生遮盖作用)

    例如,对于 cos(2π9n)+cos(8π9n),频率成分是一致的。

    但是对于 cos(7π36n)+cos(8π36n),取点 N=20,补零到 M=36. 取点比较少,频率分辨率较高,且频率之间相差比较小,容易受到旁瓣干扰。

    在这种情况下,可以增加窗的长度,提升谱分析的频率分辨率;选择其它旁瓣峰值衰减大的窗函数,减小对弱信号的掩盖

    增加矩形窗的长度 N,序列 x(t) 的周期为 gcd(1/100,1/400)=1/400,保证 NTs=k/100. 比如我们可以取 N=72,就可以使得频率成分一致。

3.8 FFT

3.8.1 DIT(时间抽取)算法

  1. 奇偶分组:

    x1={x[0],x[2],x[4],,x[N2]}x2={x[1],x[3],x[5],,x[N1]}

    分别计算 DFT X1[k],X2[k],

  2. 序列 x 的 DFT 可以表示为:

    X[k]=n=0N1x[n]WNnk=n=0N/21x[2n]WN2nk+n=0N/21x[2n+1]WN(2n+1)k=X1[k]+WNkX2[k]

    前一半和后一半的输出:

    {X[k]=X1[k]+WNkX2[k]X[N/2+k]=X1[k]WNkX2[k]
  3. 基本蝶形运算:

  4. 绘制信号流图 N=8.

    因为是时间抽取,所以 x(07) 按二进制倒序排列。然后依次每层运用基本蝶形运算,需要注意每层中因为对应的 N 不同,需要将 k 乘以相应的倍数。

3.8.2 DIF(频率抽取)算法

  1. 对 DFT 表达式进行变换:

    X[k]=n=0Nx(n)WNnk=n=0N/21x(n)WNnk+x(n+N/2)WN(n+N/2)k=n=0N/21(x(n)+(1)kx(n+N/2))WNnk
  2. 因为 X[k] 的表达式和 k 的奇偶性相关,所以有必要按照奇偶分组。

    k=2r,代入表达式,得到:

    X1[r]=X[2r]=DFT{x(n)+x(n+N/2)}

    k=2r+1,代入表达式,得到:

    X2[r]=X[2r+1]=DFT{(x(n)x(n+N/2))WNn}
  3. 基本蝶形运算:

  4. 绘制信号流图 N=8.

3.8.3 运算次数统计

3.8.4 矩阵分解视角

DIT 算法

W8=(I4I4I4I4)(I40404Λ4)(W40404W4)D8

从蝶形图的角度也可以得到:

DIF 算法

W8=D8(W40404W4)(I40404Λ4)(I4I4I4I4)

对称阵转置后也相等,证明 DIT 和 DIF 是等价的。